package com.coding.basic;
import java.util.Arrays;
public class ArrayList implements List {
private int size = 0;
private Object[] elementData = new Object[100];
public void add(Object o){
if (fullCheck())
elementData = Arrays.copyOf(elementData, size*2);
elementData[size++] = o;
}
public void add(int index, Object o){
if (fullCheck())
elementData = Arrays.copyOf(elementData, size*2);
if (!rangeCheck(index))
throw new IndexOutOfBoundsException();
for (int i = size; i > index; --i)
elementData[i] = elementData[i-1];
elementData[index] = o;
size++;
}
public Object get(int index){
if (rangeCheck(index))
return elementData[index];
throw new IndexOutOfBoundsException();
}
public Object remove(int index){
if (!rangeCheck(index))
throw new IndexOutOfBoundsException();
Object rmo = elementData[index];
for (int i = index; i < size-1; ++i)
elementData[i] = elementData[i-1];
size--;
return rmo;
}
public int size(){
return size;
}
public Iterator iterator(){
return null;
}
private boolean rangeCheck(int index) {
if (index < 0 || index >= size)
return false;
return true;
}
private boolean fullCheck() {
if (size >= elementData.length)
return true;
return false;
}
}